package com.lyf.scm.plan.domain.service;

import com.lyf.scm.plan.api.dto.BaseSkuInfoDTO;
import com.lyf.scm.plan.domain.remote.bigdata.dto.OlapMetadataDTO;
import com.lyf.scm.plan.domain.remote.bigdata.dto.OlapQueryResultDTO;
import com.lyf.scm.plan.domain.remote.bigdata.dto.TiSsStockQueryDTO;
import com.lyf.scm.plan.domain.remote.bigdata.dto.TiSsStockResultDTO;
import com.lyf.scm.plan.domain.remote.item.dto.SkuPriceDTO;
import com.lyf.scm.plan.domain.remote.stock.dto.QueryRealTimeStockDTO;
import com.lyf.scm.plan.domain.remote.stock.dto.RealTimeStockDTO;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * 常用方法
 *
 * @author wangchlei
 * @date 2020/10/30
 */
public interface CommonService {
    Map<String, BaseSkuInfoDTO> getCategoryInfoBySkuCodes(List<String> skuCodes);

    Map<String, BigDecimal> getSkuAveragePrice(List<SkuPriceDTO> list);

    String getHighestPriorityWharehouseByChannelAndArea(String channel, String province, String city);

    OlapQueryResultDTO queryMultiDimensional(OlapMetadataDTO olapMetadataDTO);

    void setCacheRecord(String queryCache, String dataCache, String tableCode);

    void reSetCacheRecord(String tableCode);

    void clearCache(String tableCode);

    List<RealTimeStockDTO> listAvailableQty(QueryRealTimeStockDTO queryData);

    List<TiSsStockResultDTO> thirteenWeekPredictSale(TiSsStockQueryDTO query);
}
